Arbeit auslagern
Um Ihre Programme möglichst schnell zu machen, müssen Sie die Datenbank die meiste Arbeit machen lassen. Hier erfahren Sie, wie es am besten funktioniert.
Lassen Sie die Datenbank arbeiten, nicht das ABAP-Programm
Der wichtigste Grundsatz bei der Programmierung von Programmen, die häufig auf die Datenbank zugreifen, ist der folgende:
Lagern Sie so viel Arbeit wie möglich auf die Datenbank aus!
Der langsamste Teil in der Verarbeitung ist der Datentransport zwischen der Datenbank und ABAP-Programm!
Das bedeutet im Einzelnen:
Lesen Sie so viele Daten wie möglich so differenziert wie möglich in eine interne Tabelle.
Ausnahme 1: Wenn Sie mehrere Millionen Datensätze selektieren, belasten Sie damit den Hauptspeicher des Systems. Da Ihnen nur ein begrenzter Bereich davon zur Verfügung steht, würde ein Teil wieder auf die Festplatte ausgelagert werden (Swapping), was sich wieder negativ auf die Performance auswirkt!
Ausnahme 2: Die Sortierung sollte innerhalb des ABAP-Programms erfolgen und nicht mittels der ORDER-BY-Klausel. (siehe auch ORDER BY)
Verwenden Sie Joins
Die Verwendung von JOINS macht eine Anwendung deshalb schneller, weil die Datenbank schon die Daten zusammensucht, die Sie auch benötigen.
Ein Anwendung, die Daten in eine interne Tabelle schreibt, hierüber “loopt” und innerhalb des LOOPs wieder Daten einliest, ist um ein vielfaches langsamer, als ein JOIN, der gleich die Daten zusammensucht
Beispiel: Lesen von Materialstammdaten aus verschiedenen Tabellen
DATA:
BEGIN OF itab OCCURS 0,
matnr TYPE matnr,
mtart TYPE mtart,
maktx TYPE maktx,
END OF itab.
*– langsame Variante –*
SELECT matnr mtart FROM mara INTO TABLE itab
WHERE mtart IN s_mtart.
LOOP AT itab.
SELECT SINGLE maktx FROM makt into itab-maktx
WHERE matnr = itab-matnr
AND spras = sy-langu.
MODIFY itab.
ENDLOOP.
*– Schnelle Variante –*
SELECT mara~matnr mara~mtart makt~maktx
FROM mara
INNER JOIN makt ON mara~matnr = makt~matnr
INTO TABLE itab
WHERE mara~mtart IN s_mtart
AND makt~spras = sy-langu.
- Meine Eclipse-Plugins - 22. November 2024
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024